---
title: clsPolicyData
summary: API reference for clsPolicyData.
status: draft
owner: SAIF Claims BOF team
last_reviewed: 2026-08-21
library: SAIF.Business.View.Policy
reference_type: embedded
---

# clsPolicyData

`clsPolicyData` is the aggregate "policy header" view object for this library and the principal
factory surface most callers use to retrieve policy information — it aggregates policy number,
name, status, agent/agency, associations, address, MCO, team assignments, and the period
collection into a single object, and is consumed throughout the Claims Legal front end wherever
a policy needs to be displayed or validated for access.

## Purpose
- Retrieves and aggregates the "policy header" view for a policy via four `GetPolicyData` overloads (by `Criteria`, by policy number, by a batch of policy numbers, by policy number + `UserAccessLevel`) ([Retrieve policy header data](../../operations/retrieve-policy-header-data.md)).
- Enforces that a policy number must be positive to be considered valid ([BR-VP-001](../../business-rules.md#br-vp-001-valid-policy-number-required)).
- Classifies the requesting user's `UserAccessLevel` (via the `UserAccessLevels` enum) to drive downstream demo-user data masking.
- Exposes an obsolete legacy `AffiliateTypes` enum, superseded by `Associations`/`clsAssociationTypeCode`.

## Context
- Namespace: `SAIF.Business.View.Policy`
- Assembly/package: `SAIF.Business.View.Policy` (embedded library reference)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `GetPolicyData` | `Shared Function GetPolicyData(DPI As IDataPortalInfo, Criteria As IBusinessCriteria) As clsPolicyData` | Retrieves a policy header using a caller-supplied `Criteria` object. |
| `GetPolicyData` | `Shared Function GetPolicyData(DPI As IDataPortalInfo, PolicyNum As Decimal) As clsPolicyData` | Retrieves a policy header by policy number. |
| `GetPolicyData` | `Shared Function GetPolicyData(DPI As IDataPortalInfo, PolicyNum As Decimal, UserAccessLevel As UserAccessLevels) As clsPolicyData` | Retrieves a policy header by policy number, tagging the result with a user access level that drives demo-user masking. |
| `GetPolicyData` | `Shared Function GetPolicyData(DPI As IDataPortalInfo, PolicyNums As IEnumerable(Of Decimal)) As IEnumerable(Of clsPolicyData)` | Retrieves policy headers for a batch of policy numbers. |
| `PolicyNum` | `Property PolicyNum As Decimal` | The policy number identifying this policy header. |
| `IsValid` | `ReadOnly Property IsValid As Boolean` | Indicates whether the object currently satisfies all registered business rules, including `PolicyNum > 0`. |
| `SecurePolicyCode` | `Property SecurePolicyCode As String` | Flag used by `clsPolicySecurity` to determine whether the SAIF secure-policy AD-resource gate applies ([BR-VP-002](../../business-rules.md#br-vp-002-secure-policy-ad-resource-gate)). |
| `UserAccessLevels` (Enum) | `Public Enum UserAccessLevels` | Ordered access-level ranking (`SAIFEmployee`=1000 down to `QuickFileUser`=300) used to drive data masking for demo users and to gate `clsPolicySecurity` authorization decisions. |
| `IsDemoUser` | `ReadOnly Property IsDemoUser As Boolean` | `True` when `UserAccessLevel` is any of the `Demo*` levels; gates demo-user data masking in this and related classes. |
| `AffiliateTypes` (Enum) | `<Obsolete> Public Enum AffiliateTypes` | Legacy affiliation classification, superseded by `Associations`/`clsAssociationTypeCode`. |
| `Agency` | `ReadOnly Property Agency As clsAgency` | The agency/agent record associated with this policy. |
| `TeamAssignmentCollection` | `ReadOnly Property TeamAssignmentCollection As clsTeamAssignmentCollection` | The team-member assignment roster for this policy. |
| `Associations` | `ReadOnly Property Associations As IEnumerable(Of IPolicyHeaderAssociation)` | Policy-to-policy associations for this policy (parent/child affiliations, groupable associations). |

## Inherited public members

Members in this section are inherited from `clsBusinessBase` in `saif.framework.core`. They are
available on this type through inheritance.

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| `Rules` | `Property Rules As clsRulesManager` | Owns the rule-registration/enforcement engine used to evaluate business rules such as `PolicyNum > 0`.† | `saif.framework.core` — `clsBusinessBase` |
| `BeginEdit` | `Sub BeginEdit()` | Opens an in-memory editing scope for this object.† | `saif.framework.core` — `clsBusinessBase` |
| `CancelEdit` | `Sub CancelEdit()` | Rolls back an in-memory editing scope for this object.† | `saif.framework.core` — `clsBusinessBase` |
| `ApplyEdit` | `Sub ApplyEdit()` | Commits an in-memory editing scope for this object.† | `saif.framework.core` — `clsBusinessBase` |
| `Error` (via `IDataErrorInfo`) | `ReadOnly Property Error As String` | Surfaces broken-rule state to data-bound UI controls.† | `saif.framework.core` — `clsBusinessBase` |
| `Item(columnName)` (via `IDataErrorInfo`) | `ReadOnly Property Item(columnName As String) As String` | Surfaces per-column broken-rule messages to data-bound UI controls.† | `saif.framework.core` — `clsBusinessBase` |
| `AllowCache` | `Public Property AllowCache() As Boolean` | Controls whether the retrieved object may be cached by the framework's data-access layer.† | `saif.framework.core` — `clsBusinessBase` |

## Behavioral notes
- If no row is found for a requested policy number, an error message is attached to the returned object rather than an exception being thrown.*
- `AddBusinessRules` registers `ValidPolicyNum` against the `PolicyNum` property; when it fails, the broken-rule message "Error: Invalid policy number." is attached.

## Constraints and usage notes
- `AffiliateTypes` is marked `<Obsolete>`; new code should use `Associations`/`clsAssociationTypeCode` instead.
- `GetPolicyData` delegates its actual retrieval to the BOF Framework's data access layer (`saif.framework.core`); the SQL/procedure call itself is `pk73094_policy_data.getpolicy` ([SQL-VP-008](../../sql/SQL-008-getpolicy.md)).

> **Note:** Statements marked with `†` are derived from dependency library
> documentation via the Legends CLI. Statements marked with `*` were inferred
> from code structure or contextual evidence. Statements marked with `**` could
> not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Business.View.Policy\clsPolicyData.vb`
